"""
功能描述 ：
编写人 ：
编写日期 ：
实现逻辑 ：
    1- ......
        1.1- ......
    2- ......
        2.1- ......
"""
"""
导包
1 获取测试数据
2 定义一个测试类
    2.1 创建测试用例方法
    2.2 获取测试数据内进行请求所需要的关键字段
    2.3 进行请求获得返回结果
    2.4 断言接口返回的结果,判断成功失败
"""
import unittest
import requests
from common.readData import ReadData
from ddt import ddt,unpack,data
from common.configHttp import ConfigHttp

# 1 获取测试数据
# 实例化数据驱动模块
rd = ReadData()
# 驱动方式一(excel):
testdata = rd.read_excel()
# # 驱动方式二(json):
# testdata = rd.read_json()
# # 驱动方式三(yaml):
# testdata = rd.read_yaml()

#定义一个测试类

@ddt

class TestCase(unittest.TestCase):
    # 2.1 创建测试用例方法
    @data(*testdata)
    @unpack
    def test_case(self, id, interfaceUrl, name, method, value, expect, real):
        # 2.2 获取测试数据内进行请求所需要的关键字段
        value = eval(value)
        expect = int(expect)
        print(interfaceUrl,method,value,expect)
        # 2.3 进行请求获得返回结果
        # 实例化
        ch = ConfigHttp(method,interfaceUrl,value)
        re = ch.run(self)
        print(re.text)
        res_dict = ["errorCode"]
        # 2.4 断言接口返回的结果,判断成功失败
        # self.assertEqual(res_dict["errorCode"], expect, "测试用例不通过")

        # 坑:
        # 坑一:用if做断言,不写assertion
        # 获取状态
        # if real == expect:
        #     status = "pass"
        # else:
        #     status = "fail"
        #     raise AssertionError("用例执行失败")
        # print("状态--------->", status)

        # 坑二:
        # 获取状态

        if real == expect:
            stat = "pass"
        else:
            status = "fail"
        print("状态----",status)
        # 将实际结果和状态写入excel
        try:
    # 2.4 断言接口返回的结果,判断成功失败
            self.assertEqual(res_dict["errorCode"],expect,"测试不通过")
        except Exception as msg:
            raise
if __name__ == '__main__':
    unittest.main(verbosity=2)


